#include "hash.h"
#include "LinkedList.h"
#include "Texture2.h"
#include <iostream>
#include <stdio.h>
#include "glm/glm.hpp"
#include "Image.h"
#include "stdlib.h"
#include "Parser.h"

using namespace std;
using namespace glm;

float hue2rgb(float p, float q, float t) {
    if (t < 0) t += 1;
    if (t > 1) t -= 1;
    if (t < 1.0/6.0) return p + (q - p) * 6.0 * t;
    if (t < 1.f/2.f) return q;
    if (t < 2.f/3.f) return p + (q - p) * (4.0 - t * 6.0);

    return p;
}

vec3 HSLtoRGB(float h, float s, float l) {
    vec3 ret;

    if (s == 0) {
        ret = vec3(1.0);
    }
    else {
        float q = l < 0.5 ? l * (1.f + s) : l + s - l * s;
        float p = 2.f * l - q;

        ret.x = hue2rgb(p, q, h + 1.0/3.0);
        ret.y = hue2rgb(p, q, h);
        ret.z = hue2rgb(p, q, h - 1.0/3.0);
    }

    return ret;
}

typedef struct val {
    int a;
} Val;

int main() {
    Sphere *p;
    AABB headbox;
    return 0;
}
